from main.model.devices.cpu import CPU
from main.model.devices.device_manager import DeviceManager
from main.model.devices.disk import Disk
from main.model.logic.output import Output
from main.model.devices.memory.virtual_memory import VirtualMemory


class DeviceManagerBuilder(object):
    
    def __init__(self):
        self.__disk   = None
        self.__memory = None
        self.__cpu    = None
        self.__output = None
        self.__clock  = None
            
    def with_defaults(self):
        self.__disk   = Disk()
        self.__memory = VirtualMemory()
        self.__cpu    = CPU()
        self.__output = Output()
        return self
    
    def with_cpu(self, cpu):
        self.__cpu = cpu
        return self
        
    def build(self):
        return DeviceManager(self.__disk, self.__memory, self.__cpu, self.__output)
        
            
